import { createSlice } from '@reduxjs/toolkit'
interface stateType {
  count: number
}
const initialState: stateType = {
  count: 0
}
// 定义初始状态和 reducer
// 注意：这里的 name 字段是必须的，用于生成 action 的类型
// 同时，reducer 函数的第一个参数是当前的 state，第二个参数是 action
// 这里的 state 是一个不可变的对象，不能直接修改它，需要使用 immer 库来创建新的 state
const counter = createSlice({
  name: 'counter',
  initialState,
  reducers: {
    add: (state): void => {
      state.count++
    },
    sub: (state): void => {
      state.count--
    }
  }
})

export const { add, sub } = counter.actions // 导出action函数
// 定义异步action
export const subAsync = () => {
  return async (dispatch: (arg0: { payload: undefined; type: "counter/sub" }) => void): Promise<void> => {
    setTimeout(() => {
      dispatch(sub())
    }, 3000)
  }
}

export default counter.reducer // 导出 reducer 创建store
